home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #5 & #6 / Amiga Plus CD - 1995 - No. 5 and 6.iso / pd / serien / purity / nr.51 / xpk-kp / xupdemo.p < prev    next >
Text File  |  1995-08-27  |  1KB  |  74 lines

  1.  
  2. program XupDemo;
  3.  
  4. uses Dos,Exec;
  5.  
  6. {$incl 'xpk.lib'}
  7.  
  8. const Name = 'RAM:Test'; {gepackte Testdatei}
  9.  
  10. var TmpName,ErrBuf : str;
  11.     shelp : string;
  12.     InLock,InHdl : BPTR;
  13.     InFib  : FileInfoBlock; STATIC;
  14.     ok,InSize,anz,err,i : long; STATIC;
  15.     ok2 : boolean; STATIC;
  16.     InBuf : ptr; STATIC;
  17.     Tags : array[0..5] of TagItem; STATIC;
  18.  
  19. begin
  20.  
  21.   OpenLib(DosBase,'dos.library',36);
  22.  
  23.   InLock:=Lock(Name,EXCLUSIVE_LOCK);
  24.  
  25.   InHdl:=OpenFromLock(InLock);
  26.   if InHdl=0 then begin
  27.     Error('Cannot open File');
  28.   end;
  29.  
  30.   ok:=Examine(InLock,^InFib);
  31.   if InFib.fib_DirEntryType>0 then
  32.     Error('This is a Directory....');
  33.  
  34.   InSize:=InFib.fib_Size;
  35.   InBuf:=AllocVec(InSize,MEMF_PUBLIC);
  36.   if InBuf=Nil then
  37.     Error('Not enough memory for Load-Buffer');
  38.  
  39.  
  40.   anz:=_Read(InHdl,InBuf,InSize);
  41.   if anz<>InSize then
  42.     Error('Error while reading File');
  43.  
  44.   writeln( 'File: ',InFib.fib_FileName);
  45.   writeln( 'Size: ',InSize,' Bytes');
  46.  
  47.   OpenLib(XpkMasterBase,XPKNAME,0);
  48.  
  49.   shelp:=Name+'.xtmp';
  50.   TmpName:=^shelp;
  51.  
  52.   Tags[1]:=TagItem(XPK_InBuf,long(InBuf));
  53.   Tags[2]:=TagItem(XPK_InLen,InSize);
  54.   Tags[3]:=TagItem(XPK_OutName,long(TmpName));
  55.   Tags[4]:=TagItem(XPK_GetError,long(ErrBuf));
  56.   Tags[5].ti_Tag:=0;
  57.  
  58.   err:=XpkUnpack(^Tags[1]);
  59.   writeln(ErrBuf);
  60.  
  61.   FreeVec(InBuf);
  62.   UnLock(InLock);
  63.  
  64.   err:=DeleteFile(Name);
  65.   err:=Rename(TmpName,Name);
  66.  
  67. end.
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.